﻿using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
using System.Data;
using System.Configuration;

namespace GS1.DataAccess
{
    public static class DataBaseHelper
    {
            #region --- Enumeradores y Constantes ---
            public enum TipoProveedor
            {
                SQLSERVER = 0,
                ORACLE = 1
            }
 
            private const string PROVEEDOR_ORACLE = "ORACLE";
            private const string CODIGO_EMPRESA = "";
            private const string CODIGO_SISTEMA = "QS5";
            private const string CODIGO_MODULO = "QS51";
            private const string ESQUEMA = ""; //"QS5.";
            private const string FORMATO_ESQUEMA_PROCEDIMIENTO = "{0}{1}";
       
            #endregion

            #region --- Metodos Propios ---
            public static string obtenerDbProveedor(string nombreConexion)
            {
                return ConfigurationManager.ConnectionStrings[nombreConexion].ProviderName;
            }

            public static string obtenerDbCadenaConexion(string nombreConexion)
            {
                return ConfigurationManager.ConnectionStrings[nombreConexion].ConnectionString;
            }

            public static string obtenerCodigoEmpresa()
            {
                return CODIGO_EMPRESA;
            }

            public static string obtenerCodigoSistema()
            {
                return CODIGO_SISTEMA;
            }

            public static string obtenerCodigoModulo()
            {
                return CODIGO_MODULO;
            }

            public static TipoProveedor obtenerDbTipoProveedor(string nombreConexion)
            {
                TipoProveedor tipoProveedor = TipoProveedor.ORACLE;

                //TipoProveedor tipoProveedor = TipoProveedor.SQLSERVER;
                string proveedor = ConfigurationManager.ConnectionStrings[nombreConexion].ProviderName.ToUpper();

                if (proveedor.Equals(TipoProveedor.ORACLE))
                {
                    tipoProveedor = TipoProveedor.ORACLE;
                }

                return tipoProveedor;
            }

            public static string obtenerNombreProcedimiento(string nombreProcedimiento)
            {
                return string.Format(FORMATO_ESQUEMA_PROCEDIMIENTO, ESQUEMA,
                                                                    nombreProcedimiento);
            }
            #endregion
        }

        /// <summary>
        /// <para>Clase       : ConstantesDAO</para>
        /// <para>Descripcion : Permite definir los nombres de las interfaces para DAO</para>
        /// <para>Autor       : Pedro Miguel Vera Rafael</para>
        /// <para>Fecha       : 15/06/2011</para>
        /// <para>Empresa     : GS1 Peru</para>
        /// </summary>
        public static class ConstantesDAO
        {
            /// <summary>
            /// Nombre de la interface para acceder a fuentes de datos 
            /// </summary>
            public enum NombreInterface
            {
                ConexHermes = 0,
            }
        }
    }
